Intrinsic software redundancy for self-healing software systems, automated oracle generation
نویسندگان
چکیده
Software systems are intrinsically redundant. We identify the sources of intrinsic software redundancy in good design practices, and suggest how to exploit intrinsic software redundancy to augment software systems with self-healing capabilities and to automatically generate test oracles. Reliability is becoming a necessity for many software systems used in everyday life, where failures may interrupt important services with severe economical and social consequences. In system and software engineering, reliability is traditionally approached by adding some form of redundancy to overcome the consequences of faults that are unavoidable in human artifacts. RAID (Redundant Array of Independent Disks) [PGK88], HDFS (Hadoop Distributed File Systems) and N-version programming [Avi85] are good examples of the use of redundancy for improving hardware, data and software reliability, respectively. In these approaches, redundancy is added deliberately to the systems to improve reliability, and comes with additional costs that may be acceptable for some systems, like safety critical systems, but may not meet the requirements of other domains, like many software applications used in everyday life. We observe that many software systems are characterized by an intrinsic form of redundancy that derives from good design practices: Design for reusability creates many distinct APIs to improve compatibility with different uses, and this results in a variety of implementations of the same functionality; Performance optimisation results in different methods implementing the same functionality with different, optimised code; Backward compatibility preserves the old versions of the reimplemented functionalities thus offering redundant methods. Redundancy is massively present in modern software systems: Our manual inspection of several popular libraries including Apache Ant, Google Guava, Joda Time, Eclipse SWT, GraphStream, Apache Lucene, GoogleMaps and YouTube identified over 4,700 redundant methods, with an average of 5 redundant methods per class [CGPP10, CGM13]. Redundancy is present at many abstraction levels. So far, we have exploited the redundancy intrinsically present at the method call level both to build self-healing software systems Alessandra Gorla is with the IMDEA Software Institute, Madrid, Spain Mauro Pezzè is also with the University of Milano-Bicocca, Milano, Italy Paolo Tonella is with Fondazione Bruno Kessler, Trento, Italy
منابع مشابه
A Self-Healing Framework for General Software Systems
Modern systems must guarantee high reliability, availability, and efficiency. Their complexity, exacerbated by the dynamic integration with other systems, the use of thirdparty services and the various different environments where they run, challenges development practices, tools and testing techniques. Testing cannot identify and remove all possible faults, thus faulty conditions may escape ve...
متن کاملA Framework for Using Component Redundancy for self-Optimising and self-Healing Component Based Systems
The ever-increasing complexity of software systems makes it progressively more difficult to provide dependability guarantees for such systems, especially when they are deployed in unpredictably changing environments. The Component Based Software Development initiative addresses many of the complexity related difficulties, but consequently introduces new challenges. These are related to the lack...
متن کاملA Fault Model Centered Modeling Framework for Self-healing Computing Systems
As the computing systems become more and more complex, new technology and approach are desired to construct the system, so as to make them more reliable or self-healable. A modeling framework to generating selfhealing system is proposed in this paper. The model framework consists of function model, fault model, self-healing model, model composition mechanism for integration of the function mode...
متن کاملSelf-Organizing Code-Level Redundancy for Networking Protocols
Fault tolerant systems are usually built around redundant elements controlled by a central observer that decides which of the elements provide the correct results and thus are healthy. Nature lacks such dedicated controllers; instead, proliferation of “good” results is an emergent phenomenon achieved through homeostasis – the intrinsic self-regulation in order to maintain a stable, healthy stat...
متن کاملAutomated Test Oracle Methods
Software testing is used to improve software quality by finding fault in the software. To verify the software behavior, testers require test oracle, which is a reliable source of expected software behavior and provides outputs for any input specified in the software specifications and a comparator to verify actual results generated by the software. While test automation requires automated oracl...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015